Package de.yaams.maker.programm.favorit

Source Code of de.yaams.maker.programm.favorit.FavoritManagement

/**
*
*/
package de.yaams.maker.programm.favorit;

import java.awt.Component;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import de.yaams.maker.helper.FileHelper;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.extensions.IExtension;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.YDialog;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.YToolBar;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormTextField;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.icons.FormIcon;
import de.yaams.maker.helper.gui.icons.IconCache;
import de.yaams.maker.helper.gui.list.BasisListElement;
import de.yaams.maker.helper.gui.tabs.SplitActionListElement;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.YaFrame;
import de.yaams.maker.programm.environment.YLevel;
import de.yaams.maker.programm.project.Project;
import de.yaams.maker.programm.tabs.BasicTabEvent;
import de.yaams.maker.programm.tabs.HomeTab;
import de.yaams.maker.programm.tabs.OptionsTab;
import de.yaams.maker.programm.tabs.TabEvent;
import de.yaams.maker.programm.tabs.YaTab;

/**
* @author abby
*
*/
public class FavoritManagement {

  private static ArrayList<BasisListElement> favorit;
  private static ArrayList<String> lastTabs;

  /**
   *
   */
  public FavoritManagement() {
    // TODO Auto-generated constructor stub
  }

  public synchronized static void init() {
    favorit = (ArrayList<BasisListElement>) FileHelper.loadXML(new File(YAamsCore.programPath, "favorit.xml"));
    // exist?
    if (favorit == null) {
      favorit = new ArrayList<BasisListElement>();
      add(new HomeTab());
    }

    lastTabs = (ArrayList<String>) FileHelper.loadXML(new File(YAamsCore.programPath, "lastTabs.xml"));
    // exist?
    if (lastTabs == null) {
      lastTabs = new ArrayList<String>();
    }

    // add it
    if (lastTabs.size() == 0) {
      lastTabs.add(BasicTabEvent.HOME);
    }

    // add save
    ExtentionManagement.add(ExtentionManagement.SAVE, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {

        saveOpenTabs();
        // save favs
        FileHelper.saveXML(new File(YAamsCore.programPath, "favorit.xml"), favorit);

      }
    });

    // install page
    ExtentionManagement.add(OptionsTab.EXADD, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {

        ArrayList<BasisListElement> ary = (ArrayList<BasisListElement>) objects.get("list");

        // add it
        ary.add(new SplitActionListElement(I18N.t("Tab-Favoriten"), null, "fav") {

          @Override
          protected Component getComponent(Project p) {
            // build list
            return new FavoritenList();
          }
        });

      }
    });
  }

  /**
   * Add a tab to the favorit
   *
   * @param tab
   */
  public static void add(YaTab tab) {
    // add it
    favorit.add(new YFavorit(tab.getTitle(), tab.getIcon(), tab.getId()));
  }

  /**
   * Add a tab to the favorit
   *
   * @param tab
   */
  public static boolean del(YFavorit fav) {
    // delete?
    if (YDialog.delete(fav.getTitle(), fav.getIcon())) {
      favorit.remove(fav);
      return true;
    }

    return false;

  }

  /**
   * Config a fav
   *
   * @param fav
   */
  public static void config(final YFavorit fav) {
    // build config
    FormBuilder f = new FormBuilder("fav.config");
    f.addElement("basic.name", new FormTextField(I18N.t("Name"), fav.getTitle()).addChangeListener(new FormElementChangeListener() {

      @Override
      public void stateChanged(FormElement form) {
        fav.setTitle(form.getContentAsString());

      }
    }));
    f.addElement("basic.icon",
        new FormIcon(I18N.t("Icon"), fav.getIcon(), IconCache.games).addChangeListener(new FormElementChangeListener() {

          @Override
          public void stateChanged(FormElement form) {
            fav.setIcon(form.getContentAsString());

          }
        }));
    // is dev?
    if (YLevel.IS_DEVELOPER) {
      f.addElement("basic.tab", new FormTextField(I18N.t("Tab"), fav.getTab()).addChangeListener(new FormElementChangeListener() {

        @Override
        public void stateChanged(FormElement form) {
          fav.setTab(form.getContentAsString());

        }
      }));
    }

    // show
    YDialog.showForm(I18N.t("Konfigure {0}", fav.getTitle()), "opts_" + fav.getIcon(), f);
  }

  /**
   * @return the toolbar
   */
  public static YToolBar getToolbar(final YaTab tab) {
    // start it?
    if (favorit == null) {
      init();
    }

    // create
    final YToolBar toolbar = new YToolBar();

    // add or del?
    boolean add = true;
    for (BasisListElement b : favorit) {

      // get it
      final YFavorit fav = (YFavorit) b;

      // check it
      if (fav.getTab() != null && fav.getTab().equals(tab.getId())) {
        add = false;

        // add remove
        toolbar.add(YFactory.tb(I18N.t("Tab aus den Favoriten löschen"), "fav_del", new AE() {

          @Override
          public void run() {
            // delete it
            if (del(fav)) {
              toolbar.getLeft().getComponent(0).setEnabled(false);
            }
          }
        }));

        break;
      }
    }

    if (add) {
      // add add
      toolbar.add(YFactory.tb(I18N.t("Tab als Favorit hinzufügen"), "fav_add", new AE() {

        @Override
        public void run() {
          add(tab);
          toolbar.getLeft().getComponent(0).setEnabled(false);
        }
      }));
    }

    // add config
    toolbar.add(YFactory.tb(I18N.t("Favoriten konfiguren"), "fav_opts", new AE() {

      @Override
      public void run() {
        YaFrame.open(TabEvent.buildParameter(HomeTab.OPTIONS, null, JavaHelper.createHashString("select", "fav")));

      }
    }));

    toolbar.addSeparator();

    // add favoriten
    for (BasisListElement b : favorit) {

      // get it
      final YFavorit fav = (YFavorit) b;

      toolbar.add(YFactory.tb(fav.getTitle(), fav.getIcon(), new AE() {

        @Override
        public void run() {
          YaFrame.open(fav.getTab(), fav);

        }
      }));
    }

    toolbar.addSeparator();

    return toolbar;
  }

  /**
   * Helpermethod to open the last saved tabs
   */
  public static void openLastTabs() {
    try {
      // load the tabs
      for (String tabs : lastTabs) {
        if (YaFrame.existTab(tabs)) {
          YaFrame.open(tabs);
        }
      }
    } catch (Throwable t) {
      YEx.info("Can not open Tabs", t);
    }

  }

  /**
   * Helpermethod to open the last saved tabs
   */
  public static void saveOpenTabs() {
    // clear
    lastTabs.clear();

    // add it
    for (String s : YaFrame.get().getPane().getDocumentNames()) {
      lastTabs.add(s);
    }

    // save it
    FileHelper.saveXML(new File(YAamsCore.programPath, "lastTabs.xml"), lastTabs);
  }

  /**
   * @return the favorit
   */
  public static ArrayList<BasisListElement> getFavorit() {
    return favorit;
  }
}
TOP

Related Classes of de.yaams.maker.programm.favorit.FavoritManagement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.